#pragma once

#include <deque>
#include <vector>
#include <list>
#include <queue>
#include <map>

#include "CompareAlgorithm.h"

#include <boost/timer.hpp>

class CArrayCompare
{
public:
  CArrayCompare(int nTimes = 0) : m_nTimes(nTimes) {}
  virtual ~CArrayCompare(void) {}

public:
  void Run();
  void SetTimes(int nTimes) {m_nTimes = nTimes;}
  int GetTimes() {return m_nTimes;}

  virtual void DequeAlgorithm() {}
  virtual void VectorAlgorithm() {}
  virtual void ListAlgorithm() {}
  virtual void QueueAlgorithm() {}
  virtual void MapAlgorithm() {}
  
protected:
  std::deque<int> m_deque;
  std::vector<int> m_vector;
  std::list<int> m_list;
  std::queue<int> m_queue;
  std::map<int, int> m_map;

protected:
  int m_nTimes;
};
